package com.site.dao.master;

import java.util.List;

import com.site.dto.master.CodeBizBean;
import com.site.model.master.CodeInfo;
import com.site.util.extremetable.QueryPage;

/**
 * Code数据访问类
 * 
 * @author Lee 2013-02-25
 */
public interface CodeDao {

	/**
	 * 获取所有的Code信息
	 * @return List<CodeInfo>
	 */
	public List<CodeInfo> getAllCodeInfo();
	/**
	 * 根据codeName和codeKey获取code对象
	 * @param codeName	code名称
	 * @param codeKey	code键值
	 * @return
	 */
	public CodeInfo getCodeInfoByCodeNameAndKey(String codeName,String codeKey);
	
	public List<CodeInfo> getAllCodeInfo(QueryPage queryPage,CodeBizBean code);
	
	public List<String> getAllCodeName();
	
	/**
	 * 新建Code时判断Code名称或Code键名是否存在
	 * @param codeName
	 * @param codeKey
	 * @param codeType	1表示新建 2表示为Code新加Key
	 * @return
	 */
	public boolean isExistsCodeNameOrCodeKey(String codeName,String codeKey,Integer codeType);
	
	/**
	 * 根据CoId查找Code对象
	 * @param codeId
	 * @return
	 */
	public CodeInfo getCodeInfoById(Integer codeId);
	/**
	 * 根据Id逻辑删除Code
	 * @param codeId
	 * @return
	 */
	public int tombstoneCode(Integer codeId);
	
	/**
	 * Code排序
	 * @param codeId
	 * @param orderBy
	 * @return
	 */
	public int updateCodeOrderBy(Integer codeId,Integer orderBy);

	/**
	 * 通过codeValue查找配送单code
	 * @return
	 */
	public List<CodeInfo> findCodeByCodeValue(String value);
	
	/**
	 * 根据分组名称和键名查找Code的值
	 * @param code
	 * @param key
	 * @return
	 */
	public String getCodeNameByKey(String code, String key);
	
	/**
	 * 查找所有的Code的备注作为查询条件
	 * @return
	 */
	public List<String> findAllCode();
	
	public void save(CodeInfo po);
	
	public CodeInfo getEntityById(Integer codeId);
	
	public void update(CodeInfo po);
	
	public void markAsDeleted(Integer obj);
}
